home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc1068.txt < prev    next >
Text File  |  1994-08-01  |  49KB  |  1,515 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         A. DeSchon
  8. Request for Comments: 1068                                     R. Braden
  9.                                                                      ISI
  10.                                                              August 1988
  11.  
  12.                 Background File Transfer Program (BFTP)
  13.  
  14.  
  15. Status of This Memo
  16.  
  17.    This memo describes an Internet background file transfer service that
  18.    is built upon the third-party transfer model of FTP.  No new
  19.    protocols are involved.  The purpose of this memo is to stimulate
  20.    discussion on new Internet service modes.  Distribution of this memo
  21.    is unlimited.
  22.  
  23. 1. Introduction
  24.  
  25.    For a variety of reasons, file transfer in the Internet has generally
  26.    been implemented as an interactive or "foreground" service.  That is,
  27.    a user runs the appropriate local FTP user interface program as an
  28.    interactive command and requests a file transfer to occur in real
  29.    time.  If the transfer should fail to complete for any reason, the
  30.    user must reissue the transfer request.  Foreground file transfer is
  31.    relatively simple to implement -- no subtleties of queuing or stable
  32.    storage -- and in the early days of networking it provided excellent
  33.    service, because the Internet/ARPANET was lightly loaded and
  34.    reasonably reliable.
  35.  
  36.    More recently, the Internet has become increasingly subject to
  37.    congestion and long delays, particularly during times of peak usage.
  38.    In addition, as more of the world becomes interconnected, planned and
  39.    unplanned outages of hosts, gateways, and networks sometimes make it
  40.    difficult for users to successfully transfer files in foreground.
  41.  
  42.    Performing file transfer asynchronously (i.e., in "background"),
  43.    provides a solution to some of these problems, by eliminating the
  44.    requirement for a human user to be directly involved at the time that
  45.    a file transfer takes place.  A background file transfer service
  46.    requires two components: a user interface program to collect the
  47.    parameters describing the required transfer(s), and a file transfer
  48.    control (FTC) daemon to carry them out.
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. DeSchon & Braden                                                [Page 1]
  59.  
  60. RFC 1068                                                     August 1988
  61.  
  62.  
  63.    Background file transfer has a number of potential advantages for a
  64.    user:
  65.  
  66.    o    No Waiting
  67.  
  68.         The user can request a large transfer and ignore it until a
  69.         notification message arrives through some common channel (e.g.,
  70.         electronic mail).
  71.  
  72.    o    End-to-end Reliability
  73.  
  74.         The FTC daemon can try a transfer repeatedly until it either
  75.         succeeds or fails permanently.  This provides reliable end-to-
  76.         end delivery of a file, in spite of the source or destination
  77.         host being down or poor Internet connectivity during some time
  78.         period.
  79.  
  80.    o    Multiple File Delivery
  81.  
  82.         In order for background file transfer to be accepted in the
  83.         Internet, it may have to include some "value-added" services.
  84.         One such service would be an implementation of a multiple file
  85.         transfer capability for all hosts.  Such a facility is suggested
  86.         in RFC-959 (see the description of "NLST") and implemented in
  87.         some User-FTP programs.
  88.  
  89.    o    Deferred Delivery
  90.  
  91.         The user may wish to defer a large transfer until an off-peak
  92.         period.  This may become important when parts of the Internet
  93.         adopt accounting and traffic-based cost-recovery mechanisms.
  94.  
  95.  
  96.    There is a serious human-engineering problem with background file
  97.    transfer: if the user makes a mistake in entering parameters, this
  98.    mistake may not become apparent until much later.  This can be the
  99.    cause of severe user frustration.  To avoid this problem, the user
  100.    interface program ought to verify the correctness of as many of the
  101.    parameters as possible when they are entered.  Of course, such
  102.    foreground verification of parameters is not possible if the remote
  103.    host to which the parameters apply is currently unreachable.
  104.  
  105.    To explore the usefulness of background file transfer in the present
  106.    Internet, we have implemented a file-mover service which we call the
  107.    Background File Transfer Program or BFTP.
  108.  
  109.    Section 2 describes BFTP and Section 3 presents our experience and
  110.    conclusions.  The appendices contain detailed information about the
  111.  
  112.  
  113.  
  114. DeSchon & Braden                                                [Page 2]
  115.  
  116. RFC 1068                                                     August 1988
  117.  
  118.  
  119.    user interface language for BFTP, a description of the program
  120.    organization, and sample execution scripts.
  121.  
  122. 2. Background File Transfer Program
  123.  
  124.    2.1 General Model
  125.  
  126.       In the present BFTP design, its user interface program and its FTC
  127.       daemon program must execute on the same host, which we call the
  128.       BFTP control host.
  129.  
  130.       Through the user interface program, a BFTP user will supply all of
  131.       the parameters needed to transfer a file from source host S to
  132.       destination host D, where S and D may be different from the BFTP
  133.       control host.  These parameters include:
  134.  
  135.       o    S and D host names,
  136.  
  137.       o    login names and passwords on S and D hosts, and
  138.  
  139.       o    S and D file names (and optionally, directories).
  140.  
  141.  
  142.       The user may also specify a number of optional control parameters:
  143.  
  144.       *    Source file disposition -- Copy, move (i.e., copy and
  145.            delete), or simply delete the source file.  The default is
  146.            copy.
  147.  
  148.       *    Destination file operation -- Create/Replace, append to, or
  149.            create a unique destination file.  The default is
  150.            create/replace ("STOR").
  151.  
  152.       *    FTP Parameters -- Explicitly set any of the FTP type, mode,
  153.            or structure parameters at S and D hosts.
  154.  
  155.       *    Multiple Transfers -- Enable "wildcard" matching to perform
  156.            multiple transfers.
  157.  
  158.       *    Start Time -- Set the time of day for the first attempt of
  159.            the transfer. The default is "now" (i.e., make the first
  160.            attempt as soon as the request has been queued for the FTC
  161.            daemon).
  162.  
  163.  
  164.       Finally, the user specifies a mailbox to which a completion
  165.       notification message will be sent, and "submits" the request to
  166.       the FTC daemon queue.  The user can then exit the BFTP user
  167.  
  168.  
  169.  
  170. DeSchon & Braden                                                [Page 3]
  171.  
  172. RFC 1068                                                     August 1988
  173.  
  174.  
  175.       interface program.
  176.  
  177.       If the transfer should fail permanently, the FTC daemon will send
  178.       a notification message to the user's mailbox.  In the event of a
  179.       temporary failure (e.g., a broken TCP connection), the FTC daemon
  180.       will log the failure and retry the transfer after some timeout
  181.       period.  The retry cycles will be repeated until the transfer
  182.       succeeds or until some maximum number of tries specified has been
  183.       reached.  In either case, a notification message will then be sent
  184.       to the user's mailbox.
  185.  
  186.       The user can check on the progress of the transfer by reentering
  187.       the BFTP user interface program, supplying a key that was defined
  188.       with the request, and displaying the current status of the
  189.       request.  The user may then cancel the request or leave it in the
  190.       queue.
  191.  
  192.       The BFTP program includes a server-Telnet module, so it can be
  193.       executed as a remotely-accessible service that can be reached via
  194.       a Telnet connection to the BFTP well-known port (152).  This
  195.       allows a user on any Internet host to perform background file
  196.       transfers without running BFTP locally, but instead opening a
  197.       Telnet connection to port 152 on a BFTP service host.  Of course,
  198.       a user can also run the local BFTP user interface program directly
  199.       on any host that supports it and for which the user has login
  200.       privileges.
  201.  
  202.       The next section discusses how BFTP uses standard FTP servers to
  203.       perform the transfers, while the following section covers the user
  204.       interface of BFTP.
  205.  
  206.    2.2 File Transfer Mechanics for BFTP
  207.  
  208.       The BFTP makes use of the "third party" or "Server-Server" model
  209.       incorporated in the Internet File Transfer Protocol [RFC-959].
  210.       Thus, the FTC daemon opens FTP control connections to the existing
  211.       FTP servers on source host S and destination host D and instructs
  212.       them to transfer the desired file(s) from S to D.  The S and D
  213.       hosts may be any two Internet hosts supporting FTP servers (but at
  214.       least one of them must support the FTP "PASV" command).  This
  215.       approach allows the implementation of a background file transfer
  216.       capability for the entire Internet at a very low cost.
  217.  
  218.       Figure 1 illustrates the BFTP model of operation.  Note that the
  219.       BFTP control host is not necessarily the same as S or D.  Figure 2
  220.       illustrates the FTP command interchange used in a typical Server-
  221.       Server file transfer operation; this may be compared with the
  222.       User-Server FTP scenario illustrated in Section 7 of RFC-959.
  223.  
  224.  
  225.  
  226. DeSchon & Braden                                                [Page 4]
  227.  
  228. RFC 1068                                                     August 1988
  229.  
  230.  
  231.       Since BFTP may be asked to transfer files between any two hosts in
  232.       the Internet, it must support all the file types and transfer
  233.       modes that are defined in RFC-959, not just a subset implemented
  234.       by particular hosts.
  235.  
  236.       BFTP supports the transfer of a set of files in a single request,
  237.       using the standard technique:
  238.  
  239.       (1)  Send an NLST command to the source host S, specifying a
  240.            pathname containing "wildcard" characters.  The reply will
  241.            contain a list of matching source file names.
  242.  
  243.       (2)  Execute a separate transfer operation for each file in this
  244.            list.  The destination file name in each case is assumed to
  245.            be the same as the source file name; this requires that these
  246.            names be compatible with the naming conventions of D.
  247.  
  248.       It will typically be necessary to specify working directories for
  249.       the transfers at S and D, so the file names will be simple,
  250.       unstructured names on each system.
  251.  
  252.       This approach depends upon the wildcard matching capability of the
  253.       source host S.  A more general implementation would acquire a
  254.       complete list of the file names from the source host and do the
  255.       matching in the FTC daemon, for example using a regular-expression
  256.       matcher.  Another useful extension would be a general pattern-
  257.       matching file name transformation capability (e.g., like the one
  258.       included in the 4.3BSD version of FTP) to generate appropriate
  259.       destination pathnames for multiple requests.
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. DeSchon & Braden                                                [Page 5]
  283.  
  284. RFC 1068                                                     August 1988
  285.  
  286.  
  287.                     Figure 1 -- BFTP Model of Operation
  288.  
  289.  
  290.  
  291.  
  292.  
  293.                             ---------                        Remote
  294.                            |  BFTP   |      (telnet)      o    User
  295.              Local         | Network | <---------------- -|-
  296.              User  o       | Server  |                   / \
  297.                   -|-       ---------
  298.                   / \  |       |
  299.                        |       |
  300.                        |       |
  301.                        v       v
  302.                       -----------  (Submit    +---+
  303.                      | BFTP User |  request)  |---| Request
  304.                      | Interface | ---------> |---| Queue
  305.                       -----------             |---|
  306.                               .               +---+
  307.                                .              /
  308.                                 .            /
  309.                     (foreground  .          / (try/retry
  310.                       request--   .        /   request)
  311.                       see 2.3)     v      v
  312.                                    --------                 +---+
  313.                                   |  FTC   | -------------> |   |  User
  314.                                   | Daemon |     Notify     |   | Mailbox
  315.                                    --------      Message    +---+
  316.                                   /        \
  317.                                  /   FTP    \
  318.                                 /   Control  \
  319.                                /  Connections \
  320.                       HOST S  v                v  HOST D
  321.                        --------                --------
  322.                       |  FTP   | ===========> |  FTP   |
  323.                       | Server |  file        | Server |
  324.                        --------    transfer    --------
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. DeSchon & Braden                                                [Page 6]
  339.  
  340. RFC 1068                                                     August 1988
  341.  
  342.  
  343.              Figure 2 -- Server-Server File Transfer
  344.  
  345.  
  346.  
  347.           Server FTP            BFTP Daemon             Server FTP
  348.             HOST S                HOST C                  HOST D
  349.            ----------           -----------             ----------
  350.  
  351.                       <-------- Open TCP Ctrl conn
  352.                            Open TCP Ctrl conn -------->
  353.  
  354.                       <-------- (log in)
  355.       (login confirm.) -------->
  356.                                      (log in) -------->
  357.                                              <-------- (login confirm.)
  358.  
  359.                       <-------- TYPE, STRU, MODE, CWD
  360.        (confirmations) -------->
  361.                         TYPE, STRU, MODE, CWD -------->
  362.                                              <-------- (confirmations)
  363.  
  364.                       <--------  PASV command
  365.           PASV confirm -------->
  366.                                  PORT command -------->
  367.                                              <-------- PORT confirm
  368.  
  369.                                   RETR file   -------->
  370.                       <--------   STOR file
  371.                       <------------------------------ Open TCP Data conn
  372.                       <------------------------------ Send file
  373.                       <------------------------------ Close Data conn
  374.                                             <-------- RETR confirm
  375.           STOR confirm -------->
  376.  
  377.                       <-------- QUIT command
  378.                                 QUIT command -------->
  379.        Close Ctrl conn -------->
  380.  
  381.                                             <-------- Close Ctrl conn
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. DeSchon & Braden                                                [Page 7]
  395.  
  396. RFC 1068                                                     August 1988
  397.  
  398.  
  399.       BFTP currently utilizes the following Server-FTP commands [RFC-
  400.       959]: USER, PASS, ACCT, PASV, PORT, RETR, STOR, STOU, CWD, NLST,
  401.       MODE, STRU, TYPE, and QUIT.
  402.  
  403.       The FTC daemon attempts to work around FTP servers that fail to
  404.       support certain commands.  For example, if a server does not
  405.       support the optional command "CWD", the FTC daemon will attempt to
  406.       construct a complete path name using the source directory name and
  407.       the source file name.  However, it is necessary that at least one
  408.       of the two hosts support the FTP passive (PASV) command.  While
  409.       many FTP server implementations support do this command, some (in
  410.       particular, the 4.2BSD FTP) do not.  The PASV command was
  411.       officially listed as being optional in RFC-959.
  412.  
  413.    2.3 Reliable Delivery
  414.  
  415.       The reliable delivery function of BFTP is analogous to reliable
  416.       delivery in a transport protocol like TCP.  Both depend upon
  417.       repeated delivery attempts until success is achieved, and in both
  418.       cases the choice of the retry interval requires some care to
  419.       balance overhead against unresponsiveness.
  420.  
  421.       Humans are impatient, but even their impatience has a limit.  If
  422.       the file cannot be transferred "soon", a human will turn to
  423.       another project; typically, there is a tendency for the transfer
  424.       to become less urgent the longer the wait.  The FTC daemon of BFTP
  425.       therefore starts each transfer request with a very short retry
  426.       interval -- e.g., 10 minutes -- and then doubles this interval for
  427.       successive retries, until a maximum interval -- e.g., 4 hours --
  428.       is reached.  This is essentially the exponential backoff algorithm
  429.       of the Ethernet, which is also used by transport protocols such as
  430.       TCP, although BFTP and TCP have quite different rationales for the
  431.       algorithm.
  432.  
  433.       We must also define the meaning of reliable transmission for a
  434.       multiple-transfer request.  For example, the set of files selected
  435.       by wildcard characters in a pathname is not well defined; the set
  436.       may change while the request is pending, as files are created and
  437.       deleted.  Furthermore, it is unreasonable to regard the entire
  438.       multiple transfer as a single atomic operation.  Suppose that
  439.       transferring a set of files fails part way through; for an atomic
  440.       operation, the files which had been successfully transferred would
  441.       have to be deleted pending the next retry of the entire set.  This
  442.       would be ridiculously inefficient and may be impossible (since the
  443.       communication path may be broken when it is time to issue the
  444.       deletion requests).
  445.  
  446.  
  447.  
  448.  
  449.  
  450. DeSchon & Braden                                                [Page 8]
  451.  
  452. RFC 1068                                                     August 1988
  453.  
  454.  
  455.       BFTP addresses these issues in the following manner:
  456.  
  457.       *    For a multiple file operation, the FTC daemon saves the file
  458.            name list returned by the first successful NLST command in
  459.            the request queue entry.  This name list determines the set
  460.            of source files for the transfer; there can be no later
  461.            additions to the set.
  462.  
  463.       *    The FTC daemon maintains a transfer status pointer.  On each
  464.            retry cycle, it tries to transfer only those files that have
  465.            not already been successfully transferred.
  466.  
  467.       *    The request is complete when all the individual file
  468.            transfers have been successful, a permanent failure has
  469.            occured, or when the retry limit is reached.
  470.  
  471.       *    The notification message to the user lists the status of each
  472.            of the multiple files.
  473.  
  474.  
  475.    2.4 BFTP User Interface
  476.  
  477.       The purpose of BFTP is to simplify the file transfer process and
  478.       to place the burden of reliability on the BFTP control host.  We
  479.       have attempted to provide a "user friendly" command interface to
  480.       BFTP, similar in flavor to the user interface of the TOPS-20
  481.       operating system.  This interface provides extensive prompting,
  482.       defaulting, and help facilities for every command.
  483.  
  484.       For a list of all BFTP commands, the user may enter "?<Return>" at
  485.       the main BFTP prompt ("BFTP>").  Entering "help<Return>" and
  486.       "explain<Return>" will provide increasing levels of explanatory
  487.       material.  To obtain information on a particular command, "help
  488.       <command name><Return>" may be entered.  The 'quit' or 'exit'
  489.       command will exit from BFTP.  Command and subcommand names may be
  490.       abbreviated to the shortest unique sequence for that context;
  491.       alternatively, a partial name can be automatically completed by
  492.       typing <Return>.
  493.  
  494.       The normal procedure for a BFTP user is to set up a set of
  495.       parameters defining the desired transfer and then submit the
  496.       request to the FTC daemon.  To give the user the maximum
  497.       flexibility, BFTP supports three modes of submission:
  498.  
  499.       o    Background Operation
  500.  
  501.            To request a reliable background file transfer, the user will
  502.            issue the BFTP 'submit' command to the FTC daemon.
  503.  
  504.  
  505.  
  506. DeSchon & Braden                                                [Page 9]
  507.  
  508. RFC 1068                                                     August 1988
  509.  
  510.  
  511.       o    Foreground Verification, Background Operation
  512.  
  513.            The BFTP 'verify' command may be used to ascertain that file
  514.            transfer parameters are valid.  It causes BFTP to connect to
  515.            the FTP servers on both the source and the destination hosts
  516.            (if possible), log into both, verify the FTP parameters, and
  517.            verify that the specified source file is present.
  518.  
  519.            Once the 'verify' command has successfully completed, the
  520.            user can issue the 'submit' command to schedule the actual
  521.            file transfer.
  522.  
  523.  
  524.       o    Foreground Operation
  525.  
  526.            The BFTP 'transfer' command will perform the specified
  527.            third-party transfer in foreground mode.  This is illustrated
  528.            by the dotted path bypassing the queue in Figure 1.
  529.  
  530.  
  531.       The easiest way to set up the parameters is to issue the 'prompt'
  532.       command, which will prompt the user for all of the basic
  533.       parameters required for most transfers.  Certain unusual
  534.       parameters must be set with the 'set' command (see Appendix B for
  535.       details).
  536.  
  537.       When entering any parameter, the following control characters may
  538.       be used:
  539.  
  540.       ?    will display help text for the parameter, indicating its
  541.            meaning, the choices, and the default, and then reprompt for
  542.            the parameter.
  543.  
  544.       <ESC> will display the default value (or the last value set) for
  545.            this parameter.  The user can accept this default by entering
  546.            <Return>, or else erase it with Control-W and enter a
  547.            different value for the parameter, followed by <Return> to
  548.            accept the entered value.
  549.  
  550.       <Control-W>
  551.            will erase the value typed or displayed for current
  552.            parameter.
  553.  
  554.       <Return>
  555.            will accept the value displayed for this parameter, and
  556.            continue to the next parameter, if any.  If the user has not
  557.            typed a value or used <ESC> to display the default, <Return>
  558.            will display the default and then accept it.
  559.  
  560.  
  561.  
  562. DeSchon & Braden                                               [Page 10]
  563.  
  564. RFC 1068                                                     August 1988
  565.  
  566.  
  567.       It is important to provide a means for a user to obtain status
  568.       information about an earlier request or even to cancel an earlier
  569.       request.  However, these functions, especially cancellation, must
  570.       be controlled by some user authentication.  We did not want to
  571.       build a user authentication database with each BFTP instance or
  572.       require login to BFTP itself, and there is no Internet-wide user
  573.       authentication mechanism.  We adopted the following weak
  574.       authentication mechanism as a compromise:
  575.  
  576.       *    When the 'submit' command is issued, it prompts the user for
  577.            a character string called a "keyword", which recorded with
  578.            the request.
  579.  
  580.       *    This keyword can be entered later as the argument to a 'find'
  581.            command, which will display the status of all requests with
  582.            matching keywords.
  583.  
  584.       *    Similarly, the keyword may be used to cancel the
  585.            corresponding request.
  586.  
  587.       If two different users happen to choose the same keywords, of
  588.       course, this scheme will not protect each other's requests from
  589.       accidental or malicious cancellation.  However, a notification
  590.       message will be sent at the time that a cancellation occurs.
  591.  
  592.       To make a series of similar requests, the user needs only to
  593.       change the individual parameters that differ from the preceding
  594.       request and then issue a new 'submit' command, for each request.
  595.       There are commands for individually setting each of the parameters
  596.       that 'prompt' sets -- and 'time' -- to provide a shortcut for BFTP
  597.       experts.  A simpler but lengthier procedure is to use the 'prompt'
  598.       command to run through the current set of parameters, reentering
  599.       the parameters that must change and using the sequence
  600.       <ESC><return> to retain the previous value for each of the others.
  601.       The same procedures may be used to correct a mistake made in
  602.       entering a particular parameter.
  603.  
  604.       The current settings of all the BFTP parameters can be displayed
  605.       at any time with the 'status' command, while the 'clear' command
  606.       will return all parameters to their initial values.  Finally, the
  607.       'request' command allows the user to save the current set of
  608.       parameters in a file or to restore the parameters from a
  609.       previously-saved file.
  610.  
  611.       There is also a window-based BFTP user interface for use on a Sun
  612.       Workstation, described in Appendix A.  The complete list of BFTP
  613.       commands is presented in Appendix B.
  614.  
  615.  
  616.  
  617.  
  618. DeSchon & Braden                                               [Page 11]
  619.  
  620. RFC 1068                                                     August 1988
  621.  
  622.  
  623. 3. Experience and Conclusions
  624.  
  625.    BFTP has been available to users at ISI for some months.  Users have
  626.    reported a number of advantages of using BFTP:
  627.  
  628.    (a)  Some users prefer the prompting style of BFTP to the user
  629.         interface of the foreground FTP they normally use.
  630.  
  631.    (b)  The BFTP "verify" command allows the user to verify that host
  632.         names, passwords, and filenames are correct without having to
  633.         wait for the entire transfer to take place.
  634.  
  635.    (c)  Since results are returned through the mail system, a transfer
  636.         can occur without tying up a terminal line, a phone line, or
  637.         even a window.
  638.  
  639.  
  640.    BFTP must be able to communicate with a variety of Server-FTP
  641.    implementations, and we have observed much variation in the commands
  642.    supported, error handling, and the timing in these servers.  Some of
  643.    the problems we have encountered are:
  644.  
  645.    (1)  Some systems (e.g., 4.2BSD) do not support the PASV command.
  646.  
  647.    (2)  4.2/3BSD systems return a non-standard response to the NLST
  648.         command.  Instead of returning a list of complete path-names,
  649.         they use an ad hoc format consisting of a directory name
  650.         followed by a list of files.
  651.  
  652.    (3)  4.2/3BSD systems may return a "permanent negative completion
  653.         reply" (a 5xx FTP reply code) as a result of a communications
  654.         failure such as a broken TCP connection.  According to RFC-959,
  655.         the appropriate response is a "transient negative completion
  656.         reply" (a 4xx FTP reply code), which would inform the BFTP that
  657.         the transfer should be retried.
  658.  
  659.    (4)  A number of servers return badly formatted responses.  An
  660.         example of this is the 4.2/3BSD response to an NLST command for
  661.         a non-existent file name: an error string which is not preceded
  662.         by a numerical response code.
  663.  
  664.  
  665.    To diagnose problems that do occur, we have found it very useful to
  666.    have a complete record of the interchange between the FTC daemon and
  667.    the two FTP servers.  This record is saved and is currently always
  668.    included in the notification message mailed to the user (see Appendix
  669.    D for an example).  As we get more experience with this program, some
  670.    of the details of the transfer may be omitted from this log.
  671.  
  672.  
  673.  
  674. DeSchon & Braden                                               [Page 12]
  675.  
  676. RFC 1068                                                     August 1988
  677.  
  678.  
  679.    The use of library routines shared between modules makes it
  680.    relatively easy to implement additional user interface programs.  We
  681.    are currently experimenting with a window version of BFTP, the
  682.    "bftptool", which runs in the SunView environment, and is described
  683.    in Appendix A.  Some additional interfaces that might be useful are:
  684.  
  685.    o    A command line interface for use in shell scripts and
  686.         "Makefiles".
  687.  
  688.    o    A more general library interface which would make it easy to
  689.         invoke BFTP from a variety of programs.
  690.  
  691.    o    Additional full-screen form based interfaces, for example a tool
  692.         running in X-Window system environment.
  693.  
  694.  
  695.    Lastly, BFTP would benefit from the resolution of the following open
  696.    protocol issues:
  697.  
  698.    o    There currently exist no provisions for Internet-wide user
  699.         authentication.  In the BFTP context, this means that passwords
  700.         required for a file transfer must be present in BFTP request
  701.         files.  The security of these passwords is subject to the
  702.         limitations of the file system security on the BFTP control
  703.         host.  Anonymous file transfer provides a partial solution, but
  704.         a more general, long term solution is needed.
  705.  
  706.    o    Better mechanisms are needed to cope with the diversity of real
  707.         file systems in the Internet.
  708.  
  709.         For example, an extension could be made to the FTP protocol to
  710.         allow the daemon to learn the delimiter conventions of each host
  711.         file system.  This could allow a more flexible and powerful
  712.         multiple-file facility in BFTP.  This could include the
  713.         automatic transfer of directory subtrees, for example.
  714.  
  715.  
  716. 4. References
  717.  
  718.    [RFC-959] Postel, J., and J. Reynolds, "File Transfer Protocol
  719.              (FTP)", RFC-959, USC/Information Sciences Institute,
  720.              October 1985.
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. DeSchon & Braden                                               [Page 13]
  731.  
  732. RFC 1068                                                     August 1988
  733.  
  734.  
  735. Appendix A -- BFTP Implementation Structure
  736.  
  737.    BFTP has been implemented on both a Sun workstation running Sun OS
  738.    3.4 (based on 4.2BSD) and a VAX running 4.3BSD.  The program modules
  739.    are: the local user interface programs "bftp", the Internet server
  740.    program "bftpd", and the FTC daemon "fts".  BFTP makes use of the
  741.    "at" command, a UNIX batch job facility, to submit requests and
  742.    execute the daemon.  An additional user interface program, the
  743.    "bftptool", is available for Sun OS 3.4, and runs in the SunView
  744.    environment.
  745.  
  746.    BFTP keeps its state in a set of control files: request files,
  747.    command files, and message files.  These files are stored in the home
  748.    directory specified for the environment of the process running
  749.    "bftp".  If a user is running "bftp" directly, this will typically be
  750.    the user's home directory.  In the case where a user has made a
  751.    Telnet connection to the well-known port 152 on a BFTP service host,
  752.    "bftp" is started by "bftpd" (or "inetd", indirectly).  As a result,
  753.    the control files will be owned by the user-id under which "inetd"
  754.    was started, normally "root", and stored in the top level directory
  755.    "/".  Note, however, that under BFTP all user files are written by
  756.    the FTP servers, which are presumed to enforce the operating systems'
  757.    access control conventions.  Hence, BFTP does not constitute a system
  758.    integrity exposure.
  759.  
  760.    A.1  User Interface Program
  761.  
  762.       The BFTP user interface program "bftp" may be run directly via a
  763.       UNIX shell.  Once the program has been started, the prompt "BFTP>"
  764.       will appear and commands may be entered.  These commands are
  765.       described in detail in Appendix B.
  766.  
  767.    A.2  Tool-Style User Interface Program
  768.  
  769.       The BFTP user interface program "bftptool" may be started from a
  770.       shell window in the SunView environment on a Sun workstation.  The
  771.       BFTP commands may be selected via the left mouse button.  The
  772.       various file transfer parameters appear in a form-style interface;
  773.       defaults and multiple-choice style parameter values can be filled
  774.       in via menus.  An advantage of this form-style interface program
  775.       is that it is possible to view all of the file transfer parameters
  776.       simultaneously, providing the user with a sense for which
  777.       parameter values might be mutually exclusive.
  778.  
  779.       Help information can be displayed in a text subwindow by
  780.       positioning the on-screen mouse pointer over a command or a
  781.       parameter, and clicking the center mouse button.  (No standard
  782.       mechanism for displaying help information is currently included in
  783.  
  784.  
  785.  
  786. DeSchon & Braden                                               [Page 14]
  787.  
  788. RFC 1068                                                     August 1988
  789.  
  790.  
  791.       the SunView package.)
  792.  
  793.       The commands used in the "bftptool" are for the most part very
  794.       similar to the commands described in Appendix B.  Request
  795.       submittal and the execution of the FTC daemon are identical for
  796.       the "bftp" and the "bftptool" interface programs.
  797.  
  798.    A.3  Internet Server
  799.  
  800.       The Internet server program "bftpd" can be invoked by opening a
  801.       Telnet connection to a well-known port, and does not require
  802.       login.  The "bftpd" program runs under "inetd", the standard
  803.       BSD4.x well-known port dispatcher.  When a SYN arrives for the
  804.       BFTP well-known port, "bftpd" opens the TCP connection and
  805.       performs Telnet negotiations.  It then passes control to the user
  806.       interface "bftp" which allows the user to enter file transfer
  807.       requests.
  808.  
  809.    A.4  BFTP Server Daemon
  810.  
  811.       The BFTP file transfer control daemon program is named "fts" (for
  812.       "File Transfer Service").  This module contains code to actually
  813.       cause a single file transfer operation using the FTP server-server
  814.       model as shown in Figures 1 and 2.  It is invoked with the command
  815.       "fts <request-file>".  The <request-file> contains the necessary
  816.       parameters for the file transfer, in ASCII format, separated by
  817.       linefeeds.  Such a request file may be created by the user
  818.       interface program, "bftp".
  819.  
  820.       As a byproduct of the development of BFTP, "fts" represents a
  821.       server-server FTP driver that can be run independent of the "bftp"
  822.       program.  Parameters used in the file transfer are read from a
  823.       request file, which is created and accessed via library routines
  824.       which can be shared between modules.  This could be used to
  825.       perform FTP's under program control.
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. DeSchon & Braden                                               [Page 15]
  843.  
  844. RFC 1068                                                     August 1988
  845.  
  846.  
  847. Appendix B: BFTP Command Summary
  848.  
  849.    B.1 Special Editing Characters
  850.  
  851.       In the "bftp" program, the special editing characters for command
  852.       words, subcommands, and parameter fields are as follows:
  853.  
  854.         <return>    Accept current command/field.
  855.         <escape>    Complete current command/field, or display default.
  856.         <space>     Complete and delimit current command.
  857.         <delete>    Erase last character.
  858.         control-L   Refresh screen.
  859.         control-R   Refresh line.
  860.         control-U   Erase line.
  861.         control-W   Erase current token.
  862.         ?           List legal options.
  863.  
  864.    B.2 BFTP Commands
  865.  
  866.       The remainder of Appendix B consists of a list of the BFTP
  867.       commands.  Each command should be followed by a carriage-return.
  868.       In the description of the syntax for each command, square brackets
  869.       "[]" are used to indicate a ssubcommand, or a list of possible
  870.       subcommands, which are separated by the "|" character.  Angle
  871.       brackets "<>" are used to indicate a description of a parameter
  872.       where the choices would be too numerous to list, for example
  873.       "<host name/number>".
  874.  
  875.    B.2.1 Clear Command
  876.  
  877.  
  878.       Return all parameters to their default values.
  879.  
  880.             clear
  881.  
  882.    B.2.2 Destination Commands
  883.  
  884.       Set the destination directory.
  885.  
  886.             ddir <directory name>
  887.  
  888.       Set the destination file name.
  889.  
  890.             dfile <file name>
  891.  
  892.       Set the destination host, user, and password.
  893.  
  894.             dhost <host name/number> <login> <password>
  895.  
  896.  
  897.  
  898. DeSchon & Braden                                               [Page 16]
  899.  
  900. RFC 1068                                                     August 1988
  901.  
  902.  
  903.    B.2.3 Explain Command
  904.  
  905.       Display a short explanation of how to use BFTP.
  906.  
  907.             explain
  908.  
  909.    B.2.4 Find Command
  910.  
  911.       Find and display a previous request.
  912.  
  913.             find
  914.  
  915.       BFTP will prompt for the request id, which is printed when the
  916.       request is first submitted.  An example of a request id is
  917.       "bftp583101774".  BFTP also prompts for the request keyword, which
  918.       was determined by the user when the request was first submitted.
  919.       If no keyword was specified, a <CR> should be typed.  If no
  920.       request id is entered, BFTP will display all requests which
  921.       contain a matching keyword.
  922.  
  923.             RequestID (optional): <bftp-request-id>
  924.             RequestKeyword: <keyword>
  925.  
  926.       After BFTP has displayed a summary of a matching request, it asks
  927.       whether the request is to be changed, or canceled.
  928.  
  929.             Do you wish to change this request? [yes | no]
  930.             Do you wish to cancel this request? [yes | no]
  931.  
  932.       If the user indicates that the request is to be changed, BFTP will
  933.       read in the parameters and cancel the existing request.  At this
  934.       point the user may make any desired changes and use the "submit"
  935.       command to requeue the request.  At this point a new request id
  936.       will be assigned and displayed.
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954. DeSchon & Braden                                               [Page 17]
  955.  
  956. RFC 1068                                                     August 1988
  957.  
  958.  
  959.       Although this may happen extremely rarely, if at all, it is
  960.       possible that a system crash (or the interruption of the BFTP
  961.       program) at a particularly inopportune moment may leave a request
  962.       which is not queued.  When the "find" command locates such a
  963.       request, it displays the warning:
  964.  
  965.             Your request is NOT currently queued.
  966.  
  967.       If this happens, the request may be read in and resubmitted using
  968.       the following procedure:
  969.  
  970.             Your request is NOT currently queued.
  971.             Do you wish to change this request? yes
  972.  
  973.               (BFTP displays the parameters that have been read in.)
  974.  
  975.             Previous request canceled.
  976.             Use the 'submit' command to submit a new request.
  977.  
  978.    B.2.5 Help Command
  979.  
  980.       Print local help information.
  981.  
  982.             help
  983.             help <command>
  984.  
  985.    B.2.6 Quit Command
  986.  
  987.       Clear parameters and exit the BFTP program.
  988.  
  989.             quit
  990.  
  991.    B.2.7 Prompt Command
  992.  
  993.       Prompt for commonly-used parameters.
  994.  
  995.             prompt
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. DeSchon & Braden                                               [Page 18]
  1011.  
  1012. RFC 1068                                                     August 1988
  1013.  
  1014.  
  1015.       The following are the parameters that BFTP prompts for:
  1016.  
  1017.             copy/move/delete: [copy | move | delete]
  1018.             ascii/ebcdic/image/local:
  1019.                   [ascii|ebcdic] [nonprint|telnet|carriage-control]
  1020.       or
  1021.                   [image]
  1022.       or
  1023.                   [local] <byte size>
  1024.       (see "set type" for additional information)
  1025.  
  1026.             Source --
  1027.                 Host: <host name/number>
  1028.                 User: <login>
  1029.                 Password: <password>
  1030.                 Dir: <directory including a delimiter, e.g., "/" or ">">
  1031.                      (either an absolute path, or relative to the login)
  1032.                 File: <file name>
  1033.  
  1034.             Destination --
  1035.                 Host: <host name/number>
  1036.                 User: <login>
  1037.                 Password: <password>
  1038.                 Dir: <directory>
  1039.                 File: <file name>
  1040.  
  1041.       Once the prompting has been completed, the current values of all
  1042.       parameters will be displayed.  Parameters not mentioned in the
  1043.       prompting will be initialized with default values, and may be
  1044.       changed via the "set" commands.
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. DeSchon & Braden                                               [Page 19]
  1067.  
  1068. RFC 1068                                                     August 1988
  1069.  
  1070.  
  1071.    B.2.8 Request Commands
  1072.  
  1073.       The request commands enable the user to save a set of BFTP
  1074.       parameters in a "request-file" for future use.  Subcommands are
  1075.       provided to to list all available request-files, or to read,
  1076.       write, or delete a request-file.  All request-files are stored in
  1077.       the user's home directory.  Therefore, this facility is not
  1078.       available when the user is accessing BFTP by telneting to port
  1079.       152.
  1080.  
  1081.       Delete request file "bftp-save.name".
  1082.  
  1083.             request delete <name>
  1084.  
  1085.       List all bftp-save files.
  1086.  
  1087.             request list
  1088.  
  1089.       Read a request file in as the current request.
  1090.  
  1091.             request load <name>
  1092.  
  1093.       Save the current request in a file named "bftp-save.name".
  1094.  
  1095.             request store <name>
  1096.  
  1097.    B.2.9 Set Commands
  1098.  
  1099.       The "set" commands have complex subcommand structures and are used
  1100.       to set many of the less commonly used FTP parameters. The
  1101.       subcommands of "set" are as follows:
  1102.  
  1103.       Set the account for the source/destination login.
  1104.  
  1105.             set account [source | destination] <account string>
  1106.  
  1107.       Set to true to append to destination file.
  1108.  
  1109.             set append [true | false]
  1110.  
  1111.       The source file will be copied to the destination file name.
  1112.  
  1113.             set copy
  1114.  
  1115.       The source file will be deleted after the file has been moved or
  1116.       copied.
  1117.  
  1118.             set delete
  1119.  
  1120.  
  1121.  
  1122. DeSchon & Braden                                               [Page 20]
  1123.  
  1124. RFC 1068                                                     August 1988
  1125.  
  1126.  
  1127.       Set the mailbox to which the results will be returned.  The
  1128.       mailbox should be in standard internet format, for example:
  1129.       "deschon@isi.edu".
  1130.  
  1131.             set mailbox <mailbox string>
  1132.  
  1133.       Set the FTP transfer mode.
  1134.  
  1135.             set mode [stream | block | compress]
  1136.  
  1137.       The source file will be deleted after it has been copied.
  1138.  
  1139.             set move
  1140.  
  1141.       Set to true to transfer multiple files.
  1142.  
  1143.             set multiple [true | false]
  1144.  
  1145.       Set the port for the source/destination FTP connection.
  1146.  
  1147.             set port [source | destination] <port number>
  1148.  
  1149.       Set the FTP structure.
  1150.  
  1151.             set structure [file | record | page]
  1152.  
  1153.       Set the FTP type and format / byte size parameters.  Note that a
  1154.       normal text file is usually "ascii", and a "binary" file is often
  1155.       the same as an "image" file.
  1156.  
  1157.             set type [ascii|ebcdic] [nonprint|telnet|carriage-control]
  1158.       or
  1159.             set type [image]
  1160.       or
  1161.             set type [local] <byte size>
  1162.  
  1163.       Set to true if the STOU command is to be used.  If the STOU
  1164.       command is supported by the destination host, the file will be
  1165.       stored into a file having a unique file name.
  1166.  
  1167.             set unique [true | false]
  1168.  
  1169.       Set to true to display full FTP conversations for "verify" and
  1170.       "transfer" commands.
  1171.  
  1172.             set verbose [true | false]
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. DeSchon & Braden                                               [Page 21]
  1179.  
  1180. RFC 1068                                                     August 1988
  1181.  
  1182.  
  1183.    B.2.10 Source Commands
  1184.  
  1185.       Set the source directory.
  1186.  
  1187.             sdir <directory name>
  1188.  
  1189.       Set the source file name.
  1190.  
  1191.             sfile <file name>
  1192.  
  1193.       Set the source host, user, and password.
  1194.  
  1195.             shost <host name/number> <login> <password>
  1196.  
  1197.    B.2.11 Status Command
  1198.  
  1199.       Display the current parameter values.
  1200.  
  1201.             status
  1202.  
  1203.    B.2.12 Submit Command
  1204.  
  1205.       Submit the current request for background FTP.
  1206.  
  1207.             submit
  1208.  
  1209.       BFTP prompts for the following information:
  1210.  
  1211.             StartTime: <date and/or time>
  1212.             ReturnMailbox: <internet mailbox>
  1213.             RequestKeyword: <made-up keyword>
  1214.  
  1215.    B.2.13 Time Command
  1216.  
  1217.       Set the start time, the starting retry interval, and the maximum
  1218.       number of tries.
  1219.  
  1220.             time <date and/or time> <minutes between tries>
  1221.                  <maximum number of tries>
  1222.  
  1223.    B.2.14 Transfer Command
  1224.  
  1225.       Perform the current request in the foreground.
  1226.  
  1227.             transfer
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. DeSchon & Braden                                               [Page 22]
  1235.  
  1236. RFC 1068                                                     August 1988
  1237.  
  1238.  
  1239.    B.2.15 Verify Command
  1240.  
  1241.       Make the connections now to check parameters.
  1242.  
  1243.             verify
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. DeSchon & Braden                                               [Page 23]
  1291.  
  1292. RFC 1068                                                     August 1988
  1293.  
  1294.  
  1295. Appendix C: Example BFTP User Script
  1296.  
  1297.    deschon.isi.edu 1% telnet hobgoblin.isi.edu 152
  1298.    Trying 128.9.0.42 ...
  1299.    Connected to hobgoblin.isi.edu.
  1300.    Escape character is '^]'.
  1301.  
  1302.    BFTP Server (hobgoblin.isi.edu)
  1303.  
  1304.    Background File Transfer: For help, type '?', 'help', or 'explain'.
  1305.  
  1306.    BFTP> prompt
  1307.  
  1308.    Copy/Move/Delete: copy
  1309.  
  1310.    Source --
  1311.        Host: deschon.isi.edu
  1312.        User: deschon
  1313.        Password:
  1314.        Dir: ./
  1315.        File: foo*
  1316.  
  1317.    Destination --
  1318.        Host: venera.isi.edu
  1319.        User: deschon
  1320.        Password:
  1321.        Dir: ./temp/
  1322.        File: foo*
  1323.  
  1324.    StartTime: Tue Oct  6 10:14:43 1987 (interval) 60 (tries) 5
  1325.    ReturnMailbox: deschon@isi.edu
  1326.    RequestPassword:
  1327.  
  1328.    BFTP> set multiple true
  1329.    BFTP> status
  1330.        Request type: COPY
  1331.  
  1332.        Source --
  1333.            Host: 'deschon.isi.edu'
  1334.            User: 'deschon'
  1335.            Pass: SET
  1336.            Acct: ''
  1337.            Dir: './'
  1338.            File: 'foo*'
  1339.            Port: 21
  1340.  
  1341.        Destination --
  1342.            Host: 'venera.isi.edu'
  1343.  
  1344.  
  1345.  
  1346. DeSchon & Braden                                               [Page 24]
  1347.  
  1348. RFC 1068                                                     August 1988
  1349.  
  1350.  
  1351.            User: 'deschon'
  1352.            Pass: SET
  1353.            Acct: ''
  1354.            Dir: './temp/'
  1355.            File:'foo*'
  1356.            Port: 21
  1357.  
  1358.        Structure: file, Mode: stream, Type: ascii, Format: nonprint
  1359.        Multiple matching: TRUE
  1360.        Return mailbox: 'deschon@isi.edu', Password: SET
  1361.        Remaining tries: 5, Retry interval: 60 minutes
  1362.  
  1363.        Start after Tue Oct  6 10:14:43 1987.
  1364.  
  1365.    BFTP> submit
  1366.    Checking parameters...
  1367.  
  1368.    Request bftp560538880 submitted to run at 10:14 Oct 6.
  1369.  
  1370.    BFTP> quit
  1371.    bye
  1372.    Connection closed by foreign host.
  1373.    deschon.isi.edu 2%
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. DeSchon & Braden                                               [Page 25]
  1403.  
  1404. RFC 1068                                                     August 1988
  1405.  
  1406.  
  1407. Appendix D: Sample BFTP Notification Message
  1408.  
  1409.    Received-Date: Tue, 6 Oct 87 10:15:52 PDT
  1410.    Date: Tue, 6 Oct 87 10:15:47 PDT
  1411.    From: root (Operator)
  1412.    Posted-Date: Tue, 6 Oct 87 10:15:47 PDT
  1413.    To: deschon
  1414.    Subject: BFTP Results: bftp560538880
  1415.  
  1416.    Request bftp560538880 submitted to run at 10:14 Oct 6.
  1417.  
  1418.      Tue Oct  6 10:15:22 1987: starting...
  1419.  
  1420.        Request type: COPY
  1421.        Source: deschon.isi.edu-deschon-XXX--21-./-foo*
  1422.        Destination: venera.isi.edu-deschon-XXX--21-./temp/-
  1423.        Stru: F, Mode: S, Type: A N, Creation: STOR
  1424.        Multiple matching: TRUE
  1425.        Return mailbox: 'deschon@isi.edu', Password: SET
  1426.        Remaining tries: 5, Retry interval: 60 minutes
  1427.  
  1428.    Connect to: deschon.isi.edu, 21
  1429.    deschon.isi.edu ==> 220 deschon.isi.edu FTP server (Version 4.7
  1430.                            Sun Sep 14 12:44:57 PDT 1986) ready.
  1431.    Connect to: venera.isi.edu, 21
  1432.    venera.isi.edu ==> 220 venera.isi.edu FTP server (Version 4.107
  1433.                            Thu Mar 19 20:54:37 PST 1987) ready.
  1434.    deschon.isi.edu <== USER deschon
  1435.    deschon.isi.edu ==> 331 Password required for deschon.
  1436.    deschon.isi.edu <== PASS XXX
  1437.    deschon.isi.edu ==> 230 User deschon logged in.
  1438.    venera.isi.edu <== USER deschon
  1439.    venera.isi.edu ==> 331 Password required for deschon.
  1440.    venera.isi.edu <== PASS XXX
  1441.    venera.isi.edu ==> 230 User deschon logged in.
  1442.    deschon.isi.edu <== CWD ./
  1443.    deschon.isi.edu ==> 200 CWD command okay.
  1444.    venera.isi.edu <== CWD ./temp/
  1445.    venera.isi.edu ==> 250 CWD command successful.
  1446.    deschon.isi.edu <== PORT 128,9,1,56,4,106
  1447.    deschon.isi.edu ==> 200 PORT command okay.
  1448.    deschon.isi.edu <== NLST foo*
  1449.    deschon.isi.edu ==> 150 Opening data connection for /bin/ls
  1450.                            (128.9.1.56,1130) (0 bytes).
  1451.    deschon.isi.edu ==> 226 Transfer complete.
  1452.    deschon.isi.edu <== PASV
  1453.    deschon.isi.edu ==> 502 PASV command not implemented.
  1454.    venera.isi.edu <== PASV
  1455.  
  1456.  
  1457.  
  1458. DeSchon & Braden                                               [Page 26]
  1459.  
  1460. RFC 1068                                                     August 1988
  1461.  
  1462.  
  1463.    venera.isi.edu ==> 227 Entering Passive Mode (128,9,0,32,6,200)
  1464.    deschon.isi.edu <== PORT 128,9,0,32,6,200
  1465.    deschon.isi.edu ==> 200 PORT command okay.
  1466.    deschon.isi.edu <== RETR foo
  1467.    venera.isi.edu <== STOR foo
  1468.    deschon.isi.edu ==> 150 Opening data connection for foo
  1469.                            (128.9.0.32,1736) (0 bytes).
  1470.    deschon.isi.edu ==> 226 Transfer complete.
  1471.    venera.isi.edu ==> 150 Openning data connection for foo
  1472.                            (128.9.1.56,20).
  1473.    venera.isi.edu ==> 226 Transfer complete.
  1474.    venera.isi.edu <== PASV
  1475.    venera.isi.edu ==> 227 Entering Passive Mode (128,9,0,32,6,201)
  1476.    deschon.isi.edu <== PORT 128,9,0,32,6,201
  1477.    deschon.isi.edu ==> 200 PORT command okay.
  1478.    deschon.isi.edu <== RETR foo1
  1479.    venera.isi.edu <== STOR foo1
  1480.    deschon.isi.edu ==> 150 Opening data connection for foo1
  1481.                            (128.9.0.32,1737) (4 bytes).
  1482.    deschon.isi.edu ==> 226 Transfer complete.
  1483.    venera.isi.edu ==> 150 Openning data connection for foo1
  1484.                            (128.9.1.56,20).
  1485.    venera.isi.edu ==> 226 Transfer complete.
  1486.    deschon.isi.edu <== QUIT
  1487.    venera.isi.edu <== QUIT
  1488.  
  1489.      Tue Oct  6 10:15:39 1987: completed successfully.
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. DeSchon & Braden                                               [Page 27]
  1515.